package com.zjsru.plan2024.oneday;

import java.util.ArrayList;
import java.util.List;

/**
 * 2951. 找出峰值
 * @Author: cookLee
 * @Date: 2024-05-28
 */
public class FindPeaks {

    /**
     * 主
     * 峰值 是指一个严格大于其相邻元素的元素。
     * 数组的第一个和最后一个元素 不 是峰值。
     * \
     * 输入：mountain = [2,4,4]
     * 输出：[]
     * 解释：mountain[0] 和 mountain[2] 不可能是峰值，因为它们是数组的第一个和最后一个元素。
     * mountain[1] 也不可能是峰值，因为它不严格大于 mountain[2] 。
     * 因此，答案为 [] 。
     * \
     * 输入：mountain = [1,4,3,8,5]
     * 输出：[1,3]
     * 解释：mountain[0] 和 mountain[4] 不可能是峰值，因为它们是数组的第一个和最后一个元素。
     * mountain[2] 也不可能是峰值，因为它不严格大于 mountain[3] 和 mountain[1] 。
     * 但是 mountain[1] 和 mountain[3] 严格大于它们的相邻元素。
     * 因此，答案是 [1,3] 。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        FindPeaks findPeaks = new FindPeaks();
        int[] mountain = new int[]{1,4,3,8,5};
        System.out.println(findPeaks.findPeaks(mountain));
    }

    /**
     * 查找峰
     *
     * @param mountain 山
     * @return {@link List}<{@link Integer}>
     */
    public List<Integer> findPeaks(int[] mountain) {
        List<Integer> ans = new ArrayList<>();
        for (int i = 1; i < mountain.length - 1; i++) {
            if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i + 1]) {
                ans.add(i);
            }
        }
        return ans;
    }

}
